Ext.define('AgenteNET.controller.utilitarios.Recursos', {
	extend : 'Ext.app.Controller',
	views : [ 'utilitarios.recursos.Listar', 
	          'utilitarios.recursos.Novo',
	          'utilitarios.recursos.Editar',
	          'utilitarios.recursos.Chamadas',
	          'utilitarios.recursos.Funcoes' ],
	models : [ 'utilitarios.Recurso' ,
	           'utilitarios.recurso.Chamada',
	           'utilitarios.recurso.Funcao'
	           ],

	init : function() {
		this.control({
			'utilitariosRecursosNovoView filefield[cls="imagemField"]' : {
				render : this.atualizaIcone,
				change : this.atualizaIcone,
			},
			'utilitariosRecursosEditarView filefield[cls="imagemField"]' : {
				render : this.atualizaIcone,
				change : this.atualizaIcone,
			},
			'utilitariosRecursosNovoView textfield[name="video"]' : {
				render : this.atualizaVideo,
				change : this.atualizaVideo,
			},
			'utilitariosRecursosEditarView textfield[name="video"]' : {
				render : this.atualizaVideo,
				change : this.atualizaVideo,
			},

		});
		this.inicializado = true;
		console.log('Inicializado Recursos');
	},
	atualizaIcone : function(el) {
		el.up('panel').down('panel[cls="imagemFieldView"]').removeAll(true);
		el.up('panel').down('panel[cls="imagemFieldView"]').add({
			xtype : 'image',
			width : 91,
			height : 66,
			src : el.up('form').getRecord().get('icone'),
		});
	},
	atualizaVideo : function(el) {
		console.log(el.getValue());
		el.up('panel').down('panel[cls="videoPlayer"]').removeAll(true);
		el.up('panel').down('panel[cls="videoPlayer"]').add(
				{
					html : '<iframe width="255" height="180" '
							+ 'src="http://www.youtube.com/embed/'
							+ el.getValue() + '?version=2&fs=1&autoplay=1" '
							+ 'frameborder="0" allowfullscreen></iframe>',
				});
	},
	/**
    * @id 
    * @nome utilitariosRecursosListar
    * @rotulo Listar recursos
    * @titulo Lista de recursos do sistema
    * @descricao Esta funcao sao tem a finalidade de listar todos os recursos             cadastrados no sistema fim.
    * @situacao A
    * @chamadas DispositivoMenuGlobal
    */
	Listar : function(el) {
		var grid = Ext.create('AgenteNET.view.utilitarios.recursos.Listar');
		this.dispositivo.window(el, grid, true);
		return grid;
	},

	/**
    * @id 
    * @nome utilitariosRecursosNovo
    * @rotulo Criar recurso
    * @titulo Criando um novo recurso do sistema
    * @descricao tstetse
    * @autor 
    * @icone 
    * @video 
    * @situacao A
    * @chamadas 
    */
	Novo : function(el) {
		var model = this.getModel('utilitarios.Recurso').create({});
		var form = Ext.create('AgenteNET.view.utilitarios.recursos.Novo');
		form.down('tabpanel').add([
               this.getView('utilitarios.recursos.Chamadas').create({store:model.chamadasStore}),
//    		   this.getView('utilitarios.recursos.Funcoes').create({store:model.funcoesStore}),
		]);
		form.loadRecord(model);
		this.dispositivo.window(el, form);
		return form;
	},
	/**
    * @id 
    * @nome utilitariosRecursosEditar
    * @rotulo Editar recurso
    * @titulo Editando dados do recurso
    * @descricao 
    * @autor 
    * @icone 
    * @video 
    * @situacao A
    * @chamadas 
    */
	Editar : function(el, model) {
		var form = Ext.create('AgenteNET.view.utilitarios.recursos.Editar');
		form.down('tabpanel').add([
               this.getView('utilitarios.recursos.Chamadas').create({store:model.chamadasStore}),
//    		   this.getView('utilitarios.recursos.Funcoes').create({store:model.funcoesStore}),
		]);
		form.loadRecord(model);
		this.dispositivo.window(el, form);
		return form;
	},
	Adicionar : function(el) {
		var	form = el.up('form'),
			model = this.getModel('utilitarios.Recurso').create(form.getValues());

		var chamadas = [];
	    Ext.Array.each(model.chamadas().getRange(), function(rec){
	        chamadas.push(rec.get('chamada_id'));
	        rec.setDirty(true);
	    });
	    model.getProxy().setExtraParam('chamadas',Ext.encode(chamadas));
		
//	    var funcoes = [];
//	    Ext.Array.each(model.funcoes().getRange(), function(rec){
//	        funcoes.push(rec.get('funcao_id'));
//	        rec.setDirty(true);
//	    });
//	    model.getProxy().setExtraParam('funcoes',Ext.encode(funcoes));

		model.save();
	},
	Salvar : function(el) {
		var form = el.up('form'), model = form.getRecord();
		model.set(form.getValues());

		var chamadas = [];
	    Ext.Array.each(model.chamadas().getRange(), function(rec){
	        chamadas.push(rec.getData());
	        rec.setDirty(true);
	    });
	    model.getProxy().setExtraParam('chamadas',Ext.encode(chamadas));
		
//	    var funcoes = [];
//	    Ext.Array.each(model.funcoes().getRange(), function(rec){
//	        funcoes.push(rec.getData());
//	        rec.setDirty(true);
//	    });
//	    model.getProxy().setExtraParam('funcoes',Ext.encode(funcoes));

		model.save();
	},
	/**
    * @nome utilitariosRecursosExcluir
    * @rotulo Excluir recurso
    * @titulo Excluindo dados do recurso
    * @descricao 
    * @icone 
    * @video 
    * @situacao A
    */
	Excluir : function(el) {
		if(el.up('form')){
			var form = el.up('form'), model = form.getRecord();
			model.destroy();
		}else{
			var grid = el.up('grid'),
			    records = grid.getSelectionModel().getSelection();
			for(i in records)
				records[i].destroy();
		}
	},

	AdicionarChamada : function(el) {
		var form= el.up('form'), 
			grid= el.up('grid'), 
			combo= grid.down('combo'),
			id = combo.getValue();
		if (id) {
			var recurso = combo.getStore().getById(id);
			combo.getStore().remove(recurso);
			combo.setValue();
			var chamada = this.getModel('utilitarios.recurso.Chamada').create();
			chamada.setChamada(id);
			chamada.getChamada(function(recurso){
				this.store.add(this.model);
			},{store:form.getRecord().chamadas(),model:chamada});
		}
	},
	RemoverChamada : function(el) {
		var form= el.up('form'), 
			grid=el.up('grid'),
			combo=grid.down('combo'),
			id = combo.getValue(),
			records=el.up('grid').getSelectionModel().getSelection();
		for(i in records){
			combo.getStore().add(records[i].getChamada());
			form.getRecord().chamadas().remove(records[i]);
		}
	},

//	AdicionarFuncao : function(el) {
//		var form= el.up('form'), 
//			grid= el.up('grid'), 
//			combo= grid.down('combo'),
//			id = combo.getValue();
//		if (id) {
//			var recurso = combo.getStore().getById(id);
//			combo.getStore().remove(recurso);
//			combo.setValue();
//			var funcao = this.getModel('utilitarios.recurso.Funcao').create();
//			funcao.setFuncao(id);
//			funcao.getFuncao(function(recurso){
//				this.store.add(this.model);
//			},{store:form.getRecord().funcoes(),model:funcao});
//		}
//	},
//	RemoverFuncao : function(el) {
//		var form=el.up('form'),
//			grid=el.up('grid'),
//			combo=grid.down('combo'),
//			id = combo.getValue(),
//			records=el.up('grid').getSelectionModel().getSelection();
//		for(i in records){
//			combo.getStore().add(records[i].getFuncao());
//			form.getRecord().funcoes().remove(records[i]);
//		}
//	},
});